package com.yztctech.android11_01_optionmenu;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;

/**
 * 代码实现OptionsMenu---------》最普通的menu 了吧，
 * 备注:
 * 1. 当用户点击手机的顶部的menu键的时候弹出
 * 2. MainActivity的theme是AppTheme,有一个DarkActionBar
 */
public class MainActivity extends AppCompatActivity {

    //自定义菜单选项id---------》静态常量，设置之后，就和数字没有关系了，数字也仅仅数个数字而已，这个思想很好
    private static final int MENU_ITEM_VISIBLE = 10;
    private static final int MENU_ITEM_INVISIBLE = 11;
    private static final int MENU_ITEM_COLOR_BLACK = 101;
    private static final int MENU_ITEM_COLOR_RED = 102;
    private static final int MENU_ITEM_COLOR_BLUE = 103;

    private TextView testTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//-----》关联布局资源到 本 activity.java文件

        testTextView = (TextView) findViewById(R.id.tv_test);
    }

    @Override//----------------->关于activity中的oncreate。。。方法 多关注一波
    public boolean onCreateOptionsMenu(Menu menu) {

        /**
         * 加载菜单
         * groupId   组别，如果不分组的话就写Menu.NONE--------》一般没有用啊
         * itemId    ItemId，Android根据这个Id来确定不同的菜单-----------------》很重要 不过id问什么不定义到R文件？？布局资源的ID在R文件；图片的资源，都在数组中自己定义么??
         * order     顺序，那个菜单现在在前面由这个参数的大小决定---》一般不用
         * titleRes  文本，菜单的显示文本 ，可以是资源索引，也可以是字符串//----》直接写就行
         */
        menu.add( Menu.NONE, MENU_ITEM_VISIBLE, 0, "显示");
        menu.add(Menu.NONE, MENU_ITEM_INVISIBLE, 0, "隐藏");

        //加载子菜单
        SubMenu colorMenu = menu.addSubMenu("颜色设置");//----------------->submenu子菜单应该还可以加载子菜单，不需要设置ID
        colorMenu.add(Menu.NONE, MENU_ITEM_COLOR_BLACK, 0, "黑色");
        colorMenu.add(Menu.NONE, MENU_ITEM_COLOR_RED, 0, "红色");
        colorMenu.add(Menu.NONE, MENU_ITEM_COLOR_BLUE, 0, "蓝色");

        //监听菜单选中事件方式一
        MenuItem item = menu.findItem(MENU_ITEM_VISIBLE);//--==================>>menu的实例化方式，也是控件  menu和view 是并列的？？
        item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                testTextView.setVisibility(View.VISIBLE);
                return true;//------------>返回值是表达什么意思的？
		
            }
        });

        return true;
    }

    //监听菜单选中事件方式二
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {//---------->不用实现 onOptionsItemSelectedListener接口，直接重写onOptionsItemSelected方法嗷嗷

        switch (item.getItemId()) {
            case MENU_ITEM_INVISIBLE:
                testTextView.setVisibility(View.INVISIBLE);
                break;
            case MENU_ITEM_COLOR_BLACK:
                testTextView.setTextColor(Color.BLACK);
                break;
            case MENU_ITEM_COLOR_RED:
                testTextView.setTextColor(Color.RED);
                break;
            case MENU_ITEM_COLOR_BLUE:
                testTextView.setTextColor(Color.BLUE);
                break;
        }
        return true;
    }

}
